import re

# 正则表达式30分钟入门教程 :
# https://www.cnblogs.com/sunny3096/p/7201403.html
# http://www.runoob.com/w3cnote/regular-expression-30-minutes-tutorial.html

# 元字符
# . - 匹配除换行符以外的任意字符
# ^ - 匹配字符串的开始
# $ - 匹配字符串的结束
# * - 表示数量, 0或任意多个字符
# + - 表示数量, 1个或任意多个字符
# ? - 表示数量, 1次或0次
# {} - 限定长度, 比如4个数字 \d{4}
# \S - 表示不是空白符的任意字符
# \s - 匹配任意的空白符
# \W - 匹配任意不是字母，数字，下划线，汉字的字符
# \w - 匹配字母或数字或下划线或汉字
# \D - 匹配任意非数字的字符
# \d - 表示数字 [0-9]
# \B - 匹配不是单词开头或结束的位置
# \b - 单词边界符,表示单词的开头或结尾,注意:单词不仅仅只包含数字

# 贪婪匹配,懒惰匹配
'i.*e'  # 使用.* 会匹配尽可能长的结果
'i.*?e'  # 懒惰匹配, 匹配到最短的就停止


text = "Hi, I am Shirley Hilton. I am his wife."
m = re.findall(r"\b[Hh]i\b", text)  # 返回一个list
if m:
    print(m)
else:
    print('not match')

# 字符串前面加个 r , 表示不要对字符串中的字符进行转义, raw 生的,未加工的
# 否则就要加很多的\\ , 可读性差
print('\bhi')
print(r'\bhi')
print('\\bhi')

# 匹配出所有s开头e结尾的单词, \b 单词边界符的应用
str = 'site sea sue sweet see case sse ssee loses'
list = re.findall(r'\bs\S*e\b', str)
print(list)


